<?php
class RelatorioController extends Zend_Controller_Action
{
	public function indexAction() {
		$this->_helper->layout->setLayout('relatorio');
	}
		    
    public function pesquisarProdutoCompraAction(){
        $form = new App_Form_Pesquisa(false);
        $form->setNoBtnCadastrar();
        $form->setYesBtnImprimir();
        
        $obProdutoRepository = new App_Model_ProdutoRepository();
        $arProduto = $obProdutoRepository->listarTodos(array('st_ativo'=>'S'));
        $selectProduto = new Zend_Form_Element_Select( 'co_produto' );
        $selectProduto->setLabel('Produto:');
        $selectProduto->setAttribs( array('class'=> 'last-child' ) );
        $selectProduto->setDecorators( $form->_decoratorLeft );
        $selectProduto->addMultiOptions( Voitech_Util::converteModeloArrayCombo($arProduto
                                       , 'CoProduto', 'NoProduto', 1) );
        $selectProduto->addFilters( array('StringTrim','StripTags') );
        $form->addElement($selectProduto);

        $obCategoriaRepository = new App_Model_CategoriaRepository();
        $arCategoria = $obCategoriaRepository->listarTodos(array('st_ativo'=>'S'));
        $selectCategoria = new Zend_Form_Element_Select( 'co_categoria' );
        $selectCategoria->setLabel('Categoria:');
        $selectCategoria->setAttribs( array('class'=> 'last-child' ) );
        $selectCategoria->setDecorators( $form->_decoratorLeft );
        $selectCategoria->addMultiOptions( Voitech_Util::converteModeloArrayCombo($arCategoria
                                       , 'CoCategoria', 'NoCategoria', 1) );
        $selectCategoria->addFilters( array('StringTrim','StripTags') );
        $form->addElement($selectCategoria);
        
        $obFornecedorRepository = new App_Model_FornecedorRepository();
        $arObFornecedor = $obFornecedorRepository->listarTodos(array('st_ativo'=>'S'));
        $selectFornecedor = new Zend_Form_Element_Select( 'co_fornecedor' );
        $selectFornecedor->setLabel('Fornecedor:');
        $selectFornecedor->setAttribs( array('class'=> 'last-child' ) );
        $selectFornecedor->setDecorators( $form->_decoratorLeft );
        $selectFornecedor->addMultiOptions( Voitech_Util::converteModeloArrayCombo($arObFornecedor
                                       , 'CoFornecedor', 'NoFornecedor', 1) );
        $selectFornecedor->addFilters( array('StringTrim','StripTags') );
        $form->addElement($selectFornecedor);     
        
        $form->setPeriodo();
        $form->setAction('javascript:;');
        $form->show();
        
        $this->view->form = $form;
        $this->view->tituloPagina = 'Relatório de Compra de Produtos';
    }   
    
    public function listarProdutoCompraAction(){
        $this->_helper->layout->disableLayout();			
        try {
            if ($this->getRequest()->isPost()) {				  
                
                $arParam = $this->_getAllParams();
                
                if($this->_getParam('dt_inicio')!=''){
                    $arParam['dt_inicio'] = Voitech_Util::converteDataBanco($this->_getParam('dt_inicio'));
                }
                if($this->_getParam('dt_final')!=''){
                    $arParam['dt_final'] = Voitech_Util::converteDataBanco($this->_getParam('dt_final'));
                }
                $obCompraRepository = new App_Model_CompraRepository();
                $paginator = new Voitech_Paginator($obCompraRepository->listarRelatorioProduto($arParam),$this->_getParam( 'list' ),$this->_getParam('page'));		       					    	
                $this->view->paginator	= $paginator->paginar(10000);
                $this->view->div_id 	= 'div_listar_produto_compra';
                $this->view->dataType 	= "post";
                $this->view->frmName	= "frmPesquisar";       
            }			
        }catch (Voitech_ExceptionValidate $e) {
                //echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'Favor preencher corretamente os dados obrigatórios'));
                echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'favor preencher dados obrigatórios'));
        }catch (Voitech_Exception $e) {
                echo $this->_helper->json(array('resultado'=>ERRO,'retorno'=>$e->getMessage()));
        }catch (Exception $e) {
                Voitech_Log::gerarLog($e->getMessage());
                echo $this->_helper->json(array('resultado'=>ERROR_GERAL,'retorno'=>$e->getMessage()));
        }			
    }
    
    public function pesquisarProdutoDistribuicaoAction(){
        $form = new App_Form_Pesquisa(false);
        $form->setNoBtnCadastrar();
        $form->setYesBtnImprimir();
        
        $obProdutoRepository = new App_Model_ProdutoRepository();
        $arProduto = $obProdutoRepository->listarTodos(array('st_ativo'=>'S'));
        $selectProduto = new Zend_Form_Element_Select( 'co_produto' );
        $selectProduto->setLabel('Produto:');
        $selectProduto->setAttribs( array('class'=> 'last-child' ) );
        $selectProduto->setDecorators( $form->_decoratorLeft );
        $selectProduto->addMultiOptions( Voitech_Util::converteModeloArrayCombo($arProduto
                                       , 'CoProduto', 'NoProduto', 1) );
        $selectProduto->addFilters( array('StringTrim','StripTags') );
        $form->addElement($selectProduto);  

        $obCategoriaRepository = new App_Model_CategoriaRepository();
        $arCategoria = $obCategoriaRepository->listarTodos(array('st_ativo'=>'S'));
        $selectCategoria = new Zend_Form_Element_Select( 'co_categoria' );
        $selectCategoria->setLabel('Categoria:');
        $selectCategoria->setAttribs( array('class'=> 'last-child' ) );
        $selectCategoria->setDecorators( $form->_decoratorLeft );
        $selectCategoria->addMultiOptions( Voitech_Util::converteModeloArrayCombo($arCategoria
                                       , 'CoCategoria', 'NoCategoria', 1) );
        $selectCategoria->addFilters( array('StringTrim','StripTags') );
        $form->addElement($selectCategoria);
        
        $obUnidadeRepository = new App_Model_UnidadeRepository();
        $arObUnidade = $obUnidadeRepository->listarTodos(array('st_ativo'=>'S'));
        $selectUnidade = new Zend_Form_Element_Select( 'co_unidade' );
        $selectUnidade->setLabel('Unidade:');
        $selectUnidade->setAttribs( array('class'=> 'last-child' ) );
        $selectUnidade->setDecorators( $form->_decoratorLeft );
        $selectUnidade->addMultiOptions( Voitech_Util::converteModeloArrayCombo($arObUnidade
                                       , 'CoUnidade', 'NoUnidade', 1) );
        $selectUnidade->addFilters( array('StringTrim','StripTags') );
        $form->addElement($selectUnidade);     
        
        $form->setPeriodo();
        $form->setAction('javascript:;');
        $form->show();
        $this->view->form = $form;
        $this->view->tituloPagina = 'Relatório de Distribuição de Produtos';
    }   
    
    public function listarProdutoDistribuicaoAction(){
        $this->_helper->layout->disableLayout();			
        try {
            if ($this->getRequest()->isPost()) {				  
                
                $arParam = $this->_getAllParams();
                
                if($this->_getParam('dt_inicio')!=''){
                    $arParam['dt_inicio'] = Voitech_Util::converteDataBanco($this->_getParam('dt_inicio'));
                }
                if($this->_getParam('dt_final')!=''){
                    $arParam['dt_final'] = Voitech_Util::converteDataBanco($this->_getParam('dt_final'));
                }
                $obCompraRepository = new App_Model_DistribuicaoRepository();
                $paginator = new Voitech_Paginator($obCompraRepository->listarRelatorioProduto($arParam),$this->_getParam( 'list' ),$this->_getParam('page'));		       					    	
                $this->view->paginator	= $paginator->paginar(10000);
                $this->view->div_id 	= 'div_listar_produto_distribuicao';
                $this->view->dataType 	= "post";
                $this->view->frmName	= "frmPesquisar";       
            }			
        }catch (Voitech_ExceptionValidate $e) {
                //echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'Favor preencher corretamente os dados obrigatórios'));
                echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'favor preencher dados obrigatórios'));
        }catch (Voitech_Exception $e) {
                echo $this->_helper->json(array('resultado'=>ERRO,'retorno'=>$e->getMessage()));
        }catch (Exception $e) {
                Voitech_Log::gerarLog($e->getMessage());
                echo $this->_helper->json(array('resultado'=>ERROR_GERAL,'retorno'=>$e->getMessage()));
        }			
    }
    
    public function pesquisarProdutoEstoqueAction(){
        $form = new App_Form_Pesquisa(false);
        $form->setNoBtnCadastrar();
        $form->setYesBtnImprimir();
        
        $obProdutoRepository = new App_Model_ProdutoRepository();
        $arProduto = $obProdutoRepository->listarTodos(array('st_ativo'=>'S'));
        $selectProduto = new Zend_Form_Element_Select( 'co_produto' );
        $selectProduto->setLabel('Produto:');
        $selectProduto->setAttribs( array('class'=> 'last-child' ) );
        $selectProduto->setDecorators( $form->_decoratorLeft );
        $selectProduto->addMultiOptions( Voitech_Util::converteModeloArrayCombo($arProduto
                                       , 'CoProduto', 'NoProduto', 1) );
        $selectProduto->addFilters( array('StringTrim','StripTags') );
        $form->addElement($selectProduto);
        
        $obCategoriaRepositorio = new App_Model_CategoriaRepository();
        $selectBox = new Zend_Form_Element_Select( 'co_categoria' );
        $selectBox->setLabel('Categoria:');
        $selectBox->setAttribs( array('class'=> 'last-child' ) );
        $selectBox->setDecorators( $form->_decoratorLeft );
        $selectBox->addMultiOptions( Voitech_Util::converteModeloArrayCombo($obCategoriaRepositorio->listarTodos(array('st_ativo'=>'s'))
                                    , 'CoCategoria', 'NoCategoria', 1) );
        $selectBox->addFilters( array('StringTrim','StripTags') );

        $form->addElement($selectBox);
        
        $obTipoProdutoRepositorio = new App_Model_TipoProdutoRepository();
        $selectTipo = new Zend_Form_Element_Select( 'co_tipo_produto' );
        $selectTipo->setLabel('Tipo:');
        $selectTipo->setAttribs( array('class'=> 'last-child' ) );
        $selectTipo->setDecorators( $form->_decoratorLeft );
        $selectTipo->addMultiOptions( Voitech_Util::converteModeloArrayCombo($obTipoProdutoRepositorio->listarTodos(array('st_ativo'=>'s'))
                                    , 'CoTipoProduto', 'NoTipoProduto', 1) );
        $selectTipo->addFilters( array('StringTrim','StripTags') );

        $form->addElement($selectTipo);
       
        $form->setAction('javascript:;');
        $form->show();
        $this->view->form = $form;
        $this->view->tituloPagina = 'Relatório de Produtos no Estoque';
    }   
    
    public function listarProdutoEstoqueAction(){
        $this->_helper->layout->disableLayout();			
        try {
            if ($this->getRequest()->isPost()) {				  
                
                $arParam =  $this->_getAllParams();
                $obArmazenagemRepository = new App_Model_ArmazenagemRepository();
                $paginator = new Voitech_Paginator($obArmazenagemRepository->listarProdutoEstoque($arParam),$this->_getParam( 'list' ),$this->_getParam('page'));		       					    	
                $this->view->paginator	= $paginator->paginar(10000);
                $this->view->div_id 	= 'div_listar_produto_compra';
                $this->view->dataType 	= "post";
                $this->view->frmName	= "frmPesquisar";       
            }			
        }catch (Voitech_ExceptionValidate $e) {
                //echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'Favor preencher corretamente os dados obrigatórios'));
                echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'Favor preencher corretamente os dados obrigatórios'));
        }catch (Voitech_Exception $e) {
                echo $this->_helper->json(array('resultado'=>ERRO,'retorno'=>$e->getMessage()));
        }catch (Exception $e) {
                Voitech_Log::gerarLog($e->getMessage());
                echo $this->_helper->json(array('resultado'=>ERROR_GERAL,'retorno'=>$e->getMessage()));
        }			
    }
    

    
    
    
    public function pesquisarTipoProdutoCompraAction(){
        $form = new App_Form_Pesquisa(false);
        $form->setNoBtnCadastrar();
        $form->setYesBtnImprimir();
  
        $form->setPeriodo();
        $form->setAction('javascript:;');
        $form->show();
        
        $this->view->form = $form;
        $this->view->tituloPagina = 'Relatório de Compra por Tipo de Produto';
    }     
    
    public function listarTipoProdutoCompraAction(){
        $this->_helper->layout->disableLayout();			
        try {
            if ($this->getRequest()->isPost()) {				  
                
                $arParam = $this->_getAllParams();
                
                if($this->_getParam('dt_inicio')!=''){
                    $arParam['dt_inicio'] = Voitech_Util::converteDataBanco($this->_getParam('dt_inicio'));
                }
                if($this->_getParam('dt_final')!=''){
                    $arParam['dt_final'] = Voitech_Util::converteDataBanco($this->_getParam('dt_final'));
                }
                $obCompraRepository = new App_Model_CompraRepository();
                $paginator = new Voitech_Paginator($obCompraRepository->listarRelatorioTipoProduto($arParam),$this->_getParam( 'list' ),$this->_getParam('page'));		       					    	
                $this->view->paginator	= $paginator->paginar(10000);
                $this->view->div_id 	= 'div_listar_tipo_produto_compra';
                $this->view->dataType 	= "post";
                $this->view->frmName	= "frmPesquisar";       
            }			
        }catch (Voitech_ExceptionValidate $e) {
                //echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'Favor preencher corretamente os dados obrigatórios'));
                echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'favor preencher dados obrigatórios'));
        }catch (Voitech_Exception $e) {
                echo $this->_helper->json(array('resultado'=>ERRO,'retorno'=>$e->getMessage()));
        }catch (Exception $e) {
                Voitech_Log::gerarLog($e->getMessage());
                echo $this->_helper->json(array('resultado'=>ERROR_GERAL,'retorno'=>$e->getMessage()));
        }			
    }	    

    
    public function pesquisarFornecedorProdutoCompraAction(){
        $form = new App_Form_Pesquisa(false);
        $form->setNoBtnCadastrar();
        $form->setYesBtnImprimir();
  
        $form->setPeriodo();
        $form->setAction('javascript:;');
        $form->show();
        
        $this->view->form = $form;
        $this->view->tituloPagina = 'Relatório de Compra por Fornecedor';
    }     

   
    public function listarFornecedorProdutoCompraAction(){
        $this->_helper->layout->disableLayout();			
        try {
            if ($this->getRequest()->isPost()) {				  
                
                $arParam = $this->_getAllParams();
                
                if($this->_getParam('dt_inicio')!=''){
                    $arParam['dt_inicio'] = Voitech_Util::converteDataBanco($this->_getParam('dt_inicio'));
                }
                if($this->_getParam('dt_final')!=''){
                    $arParam['dt_final'] = Voitech_Util::converteDataBanco($this->_getParam('dt_final'));
                }
                $obCompraRepository = new App_Model_CompraRepository();
                $paginator = new Voitech_Paginator($obCompraRepository->listarRelatorioFornecedorProduto($arParam),$this->_getParam( 'list' ),$this->_getParam('page'));		       					    	
                $this->view->paginator	= $paginator->paginar(10000);
                $this->view->div_id 	= 'div_listar_fornecedor_produto_compra';
                $this->view->dataType 	= "post";
                $this->view->frmName	= "frmPesquisar";       
            }			
        }catch (Voitech_ExceptionValidate $e) {
                //echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'Favor preencher corretamente os dados obrigatórios'));
                echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'favor preencher dados obrigatórios'));
        }catch (Voitech_Exception $e) {
                echo $this->_helper->json(array('resultado'=>ERRO,'retorno'=>$e->getMessage()));
        }catch (Exception $e) {
                Voitech_Log::gerarLog($e->getMessage());
                echo $this->_helper->json(array('resultado'=>ERROR_GERAL,'retorno'=>$e->getMessage()));
        }			
    }
    
    
    
    
    public function pesquisarTipoProdutoDistribuicaoAction(){
        $form = new App_Form_Pesquisa(false);
        $form->setNoBtnCadastrar();
        $form->setYesBtnImprimir();
  
        $form->setPeriodo();
        $form->setAction('javascript:;');
        $form->show();
        
        $this->view->form = $form;
        $this->view->tituloPagina = 'Relatório de Distribuição por Tipo de Produto';
    }     
    
    public function listarTipoProdutoDistribuicaoAction(){
        $this->_helper->layout->disableLayout();			
        try {
            if ($this->getRequest()->isPost()) {				  
                
                $arParam = $this->_getAllParams();
                
                if($this->_getParam('dt_inicio')!=''){
                    $arParam['dt_inicio'] = Voitech_Util::converteDataBanco($this->_getParam('dt_inicio'));
                }
                if($this->_getParam('dt_final')!=''){
                    $arParam['dt_final'] = Voitech_Util::converteDataBanco($this->_getParam('dt_final'));
                }
                $obDistribuicaoRepository = new App_Model_DistribuicaoRepository();
                $paginator = new Voitech_Paginator($obDistribuicaoRepository->listarRelatorioTipoProduto($arParam),$this->_getParam( 'list' ),$this->_getParam('page'));		       					    	
                $this->view->paginator	= $paginator->paginar(10000);
                $this->view->div_id 	= 'div_listar_tipo_produto_distribuicao';
                $this->view->dataType 	= "post";
                $this->view->frmName	= "frmPesquisar";       
            }			
        }catch (Voitech_ExceptionValidate $e) {
                //echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'Favor preencher corretamente os dados obrigatórios'));
                echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'favor preencher dados obrigatórios'));
        }catch (Voitech_Exception $e) {
                echo $this->_helper->json(array('resultado'=>ERRO,'retorno'=>$e->getMessage()));
        }catch (Exception $e) {
                Voitech_Log::gerarLog($e->getMessage());
                echo $this->_helper->json(array('resultado'=>ERROR_GERAL,'retorno'=>$e->getMessage()));
        }			
    }  

    
    public function pesquisarUnidadeProdutoDistribuicaoAction(){
        $form = new App_Form_Pesquisa(false);
        $form->setNoBtnCadastrar();
        $form->setYesBtnImprimir();
  
        $form->setPeriodo();
        $form->setAction('javascript:;');
        $form->show();
        
        $this->view->form = $form;
        $this->view->tituloPagina = 'Relatório de Distribuição por Unidade';
    }     
    
    public function listarUnidadeProdutoDistribuicaoAction(){
        $this->_helper->layout->disableLayout();			
        try {
            if ($this->getRequest()->isPost()) {				  
                
                $arParam = $this->_getAllParams();
                
                if($this->_getParam('dt_inicio')!=''){
                    $arParam['dt_inicio'] = Voitech_Util::converteDataBanco($this->_getParam('dt_inicio'));
                }
                if($this->_getParam('dt_final')!=''){
                    $arParam['dt_final'] = Voitech_Util::converteDataBanco($this->_getParam('dt_final'));
                }
                $obDistribuicaoRepository = new App_Model_DistribuicaoRepository();
                $paginator = new Voitech_Paginator($obDistribuicaoRepository->listarRelatorioUnidadeProduto($arParam),$this->_getParam( 'list' ),$this->_getParam('page'));		       					    	
                $this->view->paginator	= $paginator->paginar(10000);
                $this->view->div_id 	= 'div_listar_unidade_produto_distribuicao';
                $this->view->dataType 	= "post";
                $this->view->frmName	= "frmPesquisar";       
            }			
        }catch (Voitech_ExceptionValidate $e) {
                //echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'Favor preencher corretamente os dados obrigatórios'));
                echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'favor preencher dados obrigatórios'));
        }catch (Voitech_Exception $e) {
                echo $this->_helper->json(array('resultado'=>ERRO,'retorno'=>$e->getMessage()));
        }catch (Exception $e) {
                Voitech_Log::gerarLog($e->getMessage());
                echo $this->_helper->json(array('resultado'=>ERROR_GERAL,'retorno'=>$e->getMessage()));
        }			
    }

    
    public function pesquisarPorProdutoDistribuicaoAction(){
        $form = new App_Form_Pesquisa(false);
        $form->setNoBtnCadastrar();
        $form->setYesBtnImprimir();
  
        $form->setPeriodo();
        $form->setAction('javascript:;');
        $form->show();
        
        $this->view->form = $form;
        $this->view->tituloPagina = 'Relatório de Distribuição por Unidade';
    }     
    
    public function listarPorProdutoDistribuicaoAction(){
        $this->_helper->layout->disableLayout();			
        try {
            if ($this->getRequest()->isPost()) {				  
                
                $arParam = $this->_getAllParams();
                
                if($this->_getParam('dt_inicio')!=''){
                    $arParam['dt_inicio'] = Voitech_Util::converteDataBanco($this->_getParam('dt_inicio'));
                }
                if($this->_getParam('dt_final')!=''){
                    $arParam['dt_final'] = Voitech_Util::converteDataBanco($this->_getParam('dt_final'));
                }
                $obDistribuicaoRepository = new App_Model_DistribuicaoRepository();
                $paginator = new Voitech_Paginator($obDistribuicaoRepository->listarRelatorioPorProduto($arParam),$this->_getParam( 'list' ),$this->_getParam('page'));		       					    	
                $this->view->paginator	= $paginator->paginar(10000);
                $this->view->div_id 	= 'div_listar_por_produto_distribuicao';
                $this->view->dataType 	= "post";
                $this->view->frmName	= "frmPesquisar";       
            }			
        }catch (Voitech_ExceptionValidate $e) {
                //echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'Favor preencher corretamente os dados obrigatórios'));
                echo $this->_helper->json(array('resultado'=>ERRO_VALIDACAO,'retorno'=>'favor preencher dados obrigatórios'));
        }catch (Voitech_Exception $e) {
                echo $this->_helper->json(array('resultado'=>ERRO,'retorno'=>$e->getMessage()));
        }catch (Exception $e) {
                Voitech_Log::gerarLog($e->getMessage());
                echo $this->_helper->json(array('resultado'=>ERROR_GERAL,'retorno'=>$e->getMessage()));
        }			
    }    
}